import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author 何杰
 * @version 1.0
 */
public class FindAnagrams {
    public static void main(String[] args) {
        //"cbaebabacd" "abc"
        System.out.println(findAnagrams("abab", "ab"));
    }
    public static List<Integer> findAnagrams(String s, String p) {
        int p_len = p.length(), s_len = s.length();
        List<Integer> list = new ArrayList<>();
        if(s_len < p_len) {
            return list;
        }
        int[] s_count = new int[26];
        int[] p_count = new int[26];
        for (int i = 0; i < p_len; i++) {
            ++s_count[s.charAt(i) - 'a'];
            ++p_count[p.charAt(i) - 'a'];
        }
        if(Arrays.equals(s_count, p_count)) {
            list.add(0);
        }
        for (int i = 0; i < s_len - p_len; i++) {
            --s_count[s.charAt(i) - 'a'];
            ++s_count[s.charAt(i + p_len) - 'a'];
            if(Arrays.equals(s_count, p_count)) {
                list.add(i + 1);
            }
        }
        return list;
    }
}
